package com.ruoyi.tsjData.service.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Future;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.calculate.BezierCurveUtil;
import com.ruoyi.tsjData.domain.plat.DataTshjPb;
import com.ruoyi.tsjData.mapper.DataTshjPbMapper;
import com.ruoyi.tsjData.service.IDataTshjPbService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.AsyncResult;
import org.springframework.stereotype.Service;


/**
 * 提升机-偏摆测试Service业务层处理
 * 
 * @author ruoyi
 * @date 2023-10-25
 */
@Service
public class DataTshjPbServiceImpl implements IDataTshjPbService
{
    @Autowired(required = false)
    private DataTshjPbMapper dataTshjPbMapper;

    /**
     * 查询提升机-偏摆测试
     * 
     * @param pbId 提升机-偏摆测试主键
     * @return 提升机-偏摆测试
     */
    @Override
    public DataTshjPb selectDataTshjPbByPbId(Long pbId)
    {
        return dataTshjPbMapper.selectDataTshjPbByPbId(pbId);
    }

    /**
     * 偏摆测试数据
     * @param dataTaskId
     * @return
     */
    @Override
    @Async("threadPoolKy")
    public Future<List<DataTshjPb>> selectPb(Long dataTaskId) {
        List<DataTshjPb> dataTshjPbEntities = new ArrayList<>();
        dataTshjPbEntities = dataTshjPbMapper.selectDataTshjPbByDataTaskId(dataTaskId);
        if (dataTshjPbEntities.size() != 0) {
            dataTshjPbEntities.forEach(item -> {
                item.setPbLeftChartLineDTO(BezierCurveUtil.calPoints(item.getPdLeftList(), 0.1f, true));
                item.setPbRightChartLineDTO(BezierCurveUtil.calPoints(item.getPdRightlist(), 0.1f, true));
            });
        }
        return new AsyncResult<>(dataTshjPbEntities);
    }

    /**
     * 查询提升机-偏摆测试
     *
     * @param dataTaskId 提升机-偏摆测试任务id
     * @return 提升机-偏摆测试
     */
    @Override
    public List<DataTshjPb> selectDataTshjPbByDataTaskId(Long dataTaskId) {
        return dataTshjPbMapper.selectDataTshjPbByDataTaskId(dataTaskId);
    }

    /**
     * 查询提升机-偏摆测试列表
     * 
     * @param dataTshjPb 提升机-偏摆测试
     * @return 提升机-偏摆测试
     */
    @Override
    public List<DataTshjPb> selectDataTshjPbList(DataTshjPb dataTshjPb)
    {
        return dataTshjPbMapper.selectDataTshjPbList(dataTshjPb);
    }

    /**
     * 新增提升机-偏摆测试
     * 
     * @param dataTshjPb 提升机-偏摆测试
     * @return 结果
     */
    @Override
    public int insertDataTshjPb(DataTshjPb dataTshjPb)
    {
        dataTshjPb.setCreateTime(DateUtils.getNowDate());
        return dataTshjPbMapper.insertDataTshjPb(dataTshjPb);
    }

    /**
     * 批量新增偏摆数据
     * @param dataTshjPbs 提升机-偏摆测试
     * @return
     */
    @Override
    public int batchDataTshjPb(List<DataTshjPb> dataTshjPbs) {
        return dataTshjPbMapper.batchDataTshjPb(dataTshjPbs);
    }

    /**
     * 偏摆测试
     * @param dataTaskIds 速度测试任务id
     * @return
     */
    @Override
    public int updateDataTshjPbByDataTaskIds(Long[] dataTaskIds) {
        return dataTshjPbMapper.updateDataTshjPbByDataTaskIds(dataTaskIds);
    }

    /**
     * 批量修改偏摆测试
     * @param dataTshjPbs 提升机-偏摆测试
     * @return
     */
    @Override
    public int updateBatchDataTshjPb(List<DataTshjPb> dataTshjPbs) {
        return dataTshjPbMapper.batchDataTshjPb(dataTshjPbs);
    }

    /**
     * 修改提升机-偏摆测试
     * 
     * @param dataTshjPb 提升机-偏摆测试
     * @return 结果
     */
    @Override
    public int updateDataTshjPb(DataTshjPb dataTshjPb)
    {
        dataTshjPb.setUpdateTime(DateUtils.getNowDate());
        return dataTshjPbMapper.updateDataTshjPb(dataTshjPb);
    }

    /**
     * 变更偏摆测试状态为2
     * @param dataTaskId
     * @param pbId
     * @return
     */
    @Override
    public int updateDataTshjPbByPbId(Long dataTaskId, Long pbId) {
        return dataTshjPbMapper.updateDataTshjPbByPbId(dataTaskId, pbId);
    }

    /**
     * 批量删除提升机-偏摆测试
     * 
     * @param pbIds 需要删除的提升机-偏摆测试主键
     * @return 结果
     */
    @Override
    public int deleteDataTshjPbByPbIds(Long[] pbIds)
    {
        return dataTshjPbMapper.deleteDataTshjPbByPbIds(pbIds);
    }

    /**
     * 删除提升机-偏摆测试信息
     * 
     * @param pbId 提升机-偏摆测试主键
     * @return 结果
     */
    @Override
    public int deleteDataTshjPbByPbId(Long pbId)
    {
        return dataTshjPbMapper.deleteDataTshjPbByPbId(pbId);
    }
}
